
package svpo;

import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.LineNumberReader;
import java.io.RandomAccessFile;
import java.util.logging.Logger;
import javax.swing.JOptionPane;


/**
 *
 * @author RODRIGO
 */
public class CadastroAdministrador {
    /**Gerando o objeto de log**/
    private static Logger log = Logger.getLogger(CadastroAdministrador.class.getName());
    
    private static RandomAccessFile arquivo;
        private String nomeArq = "ad2.txt";
        
        Administrador admin = new Administrador();
     /**==============================================================================
         * Salva dados de Administrador
         * @param administrador
         * @author RODRIGO
     ==============================================================================*/
   public void salvar(String nome, String cpf, String senha, String fone,
           String data, String email){
       try{
           arquivo = new RandomAccessFile (new File(nomeArq), "rw");
           log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO ABERTO COM SUCESSO."));
       }catch(FileNotFoundException e){
           System.out.println(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
           log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE."));
       }

        try{
           
            arquivo.seek(arquivo.length());

            arquivo.writeBytes(nome+"\n");
            arquivo.writeBytes(cpf+"\n");
            arquivo.writeBytes(senha+"\n");
            arquivo.writeBytes(fone+"\n");
            arquivo.writeBytes(data+"\n");
            arquivo.writeBytes(email+"\n");            
            arquivo.seek(0);
            
            log.fine(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("CADASTRO EFETUADO."));
            
            
           }catch(IOException e){
                        System.out.println(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO AO ESCREVER NO ARQUIVO!"));
                        log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO AO ESCREVER NO ARQUIVO."));
            }

       }
   /**==============================================================================
         * Salva Verifica Existência de CPF de administrador
         * @param String cpf
          
         *@return posicao - existe; 0 - n existe;    
         * @author RODRIGO
     ==============================================================================*/
   public int VerificaAdmin(String cpf){
      
     
       
         int aux1=0;
         //Declaracao do objeto "RandomAccessFile" (arquivo que ser� manipulado)
        try {
            arquivo = new RandomAccessFile(new File(nomeArq),"r");
        }
        catch (FileNotFoundException e) {
        //No caso do arquivo nao existir
        System.out.println("Arquivo Inexistente");
        log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
        aux1=-1;
        return 0;
        }
        if(aux1==0){
            try {
                int aux2=0;
                do{

                    admin.setNome(arquivo.readLine());
                    admin.setCpf(arquivo.readLine());
                    admin.setSenha(arquivo.readLine());
                    admin.setFone(arquivo.readLine());
                    admin.setDatanascimento(arquivo.readLine());
                    admin.setEmail(arquivo.readLine());
                    
                    
                   
                    aux2++;
                    if(    admin.getCpf() == null ? cpf == null : admin.getCpf().equals(cpf)){
                    	return 1;
                        
                         
                    }
                }while((aux2 < Nlinhas (nomeArq, 6)));
            }
            catch (IOException e) {
            //No caso de um erro ao ler do arquivo
            System.out.println(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO LENDO DO ARQUIVO"));
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ERRO AO LER ARQUIVO"));
            return 0;
            }
            
        }
        return 0;
         
     }
   /** ==============================================================================
     * Objetivo : Conta o numero de linhas de um arquivo
     * @param arq
     * @param num
     * @return numero de linhas
     * @autor RODRIGO
      ==============================================================================*/
    public int Nlinhas (String arq, int num){
        int linhas=0;
        try {
            File arquivoLeitura = new File(arq);

            // pega o tamanho
            long tamanhoArquivo = arquivoLeitura .length();
            FileInputStream fs = new FileInputStream(arquivoLeitura);
            DataInputStream in = new DataInputStream(fs);


            LineNumberReader lineRead = new LineNumberReader(new InputStreamReader(in));
            lineRead.skip(tamanhoArquivo);
            // conta o numero de linhas do arquivo, come�ando com zero, por isso adiciona 1
            linhas = lineRead.getLineNumber() + 1;


        } catch (IOException e) {
        System.out.println(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
        
            log.severe(java.util.ResourceBundle.getBundle("svpo/Bundle").getString("ARQUIVO INEXISTENTE"));
        return 0;
        }
        if(linhas!=0) {
            linhas = ((linhas-1)/num);
        }
        return linhas;
    }
}
